package com.implementsfaces.service;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.JdbcTemplate;

import com.implementsfaces.dao.GenericDaoiBatis;
import com.interfaces.service.BaseService;
import com.util.PaginatedList;

public class BaseServiceImp implements BaseService {
	private GenericDaoiBatis baseDao;
	
	/**
	 * 调用SQLMAP的模板SQL执行语句，包括增删改查都可以自行
	 */
	public List<Map<String, String>> queryString(String sql) {
		return baseDao.queryString(sql);
	}

	/**
	 * 通过SQL获得Map数组
	 */
	public List<Map<String, String>> executeQuery(String sql) {
		return baseDao.executeQuery(sql);
	}

	public PaginatedList<Map<String, String>> executeQueryPage(String sql, String countSql, int pageNo, int pageSize) {
		return baseDao.executeQueryPage(sql,countSql,pageNo,pageSize);
	}

	public void executeUpdate(String sql) {
		baseDao.executeUpdate(sql);
	}

	/**
	 * 返回一条记录信息,在写程序时确保只有一条记录
	 * @param sql
	 * @return
	 * @author:zhuyoulong
	 * @update:[日期YYYY-MM-DD][更改人姓名][变更描述]
	 */
	public Map<String, String> executeMap(String sql) {
		return baseDao.executeMap(sql);
	}

	/**
	 * 通过SQL执行更新或删除语句
	 */
	public void runQuery(String sql, boolean noUpdateCount) {
		baseDao.runQuery(sql, noUpdateCount);
	}

	/**
	 * 通过SQL执行查询获得分页Map数组
	 */
	@SuppressWarnings("unchecked")
	public PaginatedList<Map<String, String>> queryStringPage(String sql,String countSql, int pageNo, int pageSize) {
		return baseDao.queryStringPage(sql,countSql,pageNo,pageSize);
	}


	public boolean exists(Serializable serializable) {
		return baseDao.exists(serializable);
	}

	public Object get(Serializable serializable) {
		return baseDao.get(serializable);
	}

	public List getAll() {
		return baseDao.getAll();
	}

	
	public List getAll(Object obj) {
		return baseDao.getAll(obj);
	}

	public void remove(Serializable serializable) {
		baseDao.remove(serializable);
	}

	public Object save(Object obj) {
		return baseDao.save(obj);
	}

	public GenericDaoiBatis getBaseDao() {
		return baseDao;
	}

	public void setBaseDao(GenericDaoiBatis baseDao) {
		this.baseDao = baseDao;
	}

	public void setClass(Class persistentClass) {
		baseDao.setClass(persistentClass);
		
	}

	public JdbcTemplate getJdbcTemplate() {
		return baseDao.getJdbcTemplate();
	}
	
	
	
	
	

}
